import { Pageable } from '@/api/index';

enum Api {
	PostDealerList = '/Api/MF_ManagerFront/MF_Dealer/PostDealerList',
	PostDealerDic = '/Api/MF_ManagerFront/MF_Dealer/PostDealerDic',
	PostDealerDetail = '/Api/MF_ManagerFront/MF_Dealer/PostDealerDetail',
	PostNewDealerInit = '/Api/MF_ManagerFront/MF_Dealer/PostInsert_NewDoorInit',
	// 渠道调整 新增二级/普通门店 申请
	PostAdjustmentInsert = '/Api/MF_ManagerFront/MF_Dealer_Adjustment/PostAdjustment_Insert',
	// 关停、并转数据加载
	PostCloseDealerInit = '/Api/MF_ManagerFront/MF_Dealer/PostColse_DealerInit',
	
	PostCloseDealer = '/Api/MF_ManagerFront/MF_Dealer_Adjustment/PostAdjustment_Close',
	PostShiftDealer = '/Api/MF_ManagerFront/MF_Dealer_Adjustment/PostAdjustment_Shift',
	
	// 新门店申请
	PostNewDoorInsert = '/Api/MF_ManagerFront/MF_Dealer_Adjustment/PostAdjustment_NewDoorInsert',
	
	// 经销商详细 用于功能性申请页面的
	PostDealerApplyDetail = '/Api/MF_ManagerFront/MF_Dealer/PostDealerDetail_Applay',
	
	// 类型列表
	PostFirstTypeList = '/Api/MF_ManagerFront/MF_Dealer/PostFirst_Type_List'
	
}

interface DealerListParams extends Pageable{
	// 	是否初次加载（主要用于控制 是否返回 4巨头经理的列表 加快页面影响速度的作用） true.就返回经理列表的信息
	IsFirst: boolean,
	// 	查询层级 1.一级 2.二级 3.门店
	Level: number,
	// 父级ID 比如查询二级 时 此ID就是 进入该二级的一级经销商Id
	ParentId: number,
	// 经销商名称 一级、二级、门店页面 均有此搜索字段
	DealerName: string,
	// 	总监ID 一级存在 二级/门店 隐藏此搜索条件
	DirectorId: number,
	// 销售ID 一级存在 二级/门店 隐藏此搜索条件
	SalseId: number,
	// 城市经理ID 一级存在 二级/门店 隐藏此搜索条件
	DealerTerminalId: number,
	// 团队负责人 一级存在 二级/门店 隐藏此搜索条件
	TeamId: number,
}

interface DealerDicParams {
	// 	经销商名称
	Name: string,
	// 	层级 1.一级 2.二级 3.门店
	Level: number,
	// 	父级ID 层级为2.3才有
	ParentId: number
}

interface DealerDetailParams {
	DealerId: number,
	//查询模块 1.模块 空客样机 实体样机 2.户外 3.奖牌 若无或者其他模块则传0
	SelectType: number
}

interface AddDealerParams {
	// 父级的经销商ID 也就是从哪个ID点进来的
	DealerId: number,
	// 父级的层级
	Level: number
}

interface SaveNormalDealerParams {
	// 	点击列表进入的经销商ID
	DealerId: number
	// 申请类型 1.新增
	ApplyForType: number
	// 	申请原因 主原因
	ApplyForReasonId: number
	// 	申请原因 次原因 （选了物料需求或者费用需求之后互动的 复选） 比如 12,13,14
	Requirements: string
	// 其他备注 勾选申请/关停/并转原因中的其他选项 会出现其他备注 这里就是其他备注 （这个和申请备注不是一个字段噢 别搞错了）
	OtherNote: string
	// 并转父级经销商ID 并转才传
	ParentId: number
	// 	并转经销商 并转才传
	AndGoSecondId: number
	// 	申请/关停/并转时间
	Date: number
	// 	申请/关停/并转备注
	Remark: string
	// 	名称
	Name: string
	// 	级别
	Level: number	
	// 	联系电话
	Telephone: string
	// 	账号 默认赋值 "" 空字符串
	Account: string
	// 	省
	ProvinceId: number
	// 	市
	CityId: number
	// 区
	DistrictId: number	
	//详细地址
	Address: string
	// 	负责人
	NickName: string
	// 	手机号
	Mobile: string
	// 	简称
	Referred: string
	// 	属性 1.零售 2.工程 0.不选 单选
	DealerType: number
	// 	经营品类 分解逗号在用 多选
	BusinessCategory: string
	// 竞品品牌 - BDR品牌 分解逗号在用 多选
	CompetingGoodsBrandA: string
	// 竞品品牌 - 进口品牌 分解逗号在用 多选
	CompetingGoodsBrandB: string
	// 竞品品牌 - 国产品牌 分解逗号在用 多选
	CompetingGoodsBrandC: string
	// 上年BDR销售额 单位是固定的 温改、金蝶 TAB都是固定的 改动少 后端就不输出了
	LastYearsBDRSales: number
	// 	总销售额 单位是固定的
	TotalSales: number
		// BDR销售额占比 1.单位是固定的 % 2.这个着重说一下 这个字段什么界面都是禁止填写状态 加载界面的时候直接取值就完事，但是新增或者编辑的时候 这个字段是 由LastYearsBDRSales/TotalSales upkey事件计算的
	PercentageBDRSales: number
	// 人员数量 单位是固定的
	PeopleNum: number
	// 	一级等级 ABC那个
	DealerGrade: number
	// 	生日祝福备注 ------------老板模块
	BlessingNote: string
	// 老板姓名
	BossName: string
	// 老板手机号
	BossPhone: string
	// 	老板生日
	BossBirthday: number
	// 	是否VIP
	IsVIP: number
	// 经销商证件照
	BusinessLicenseA: string
	// 经销商协议
	TreatyPhoto: string
	// 经销商协议类型 1.图片 4.文件（文件直接href跳转）
	TreatyPhotoType: number
	// 是否签约服务商 1是 2否 这个是金蝶TAB最后一行 设计稿名字错了。
	IsSign: number
}

interface CloseAndShiftDealerParams {
	DealerId: number,
	ApplyForType: number,
	ApplyForReasonId: number,
	Requirements: string,
	OtherNote: string,
	ParentId: number,
	AndGoSecondId: number,
	Date: number,
	Remark: string,
}

export function useDealerApi(vm) {
	const getDealerList = (params: DealerListParams) => {
		return vm.$u.post(Api.PostDealerList, params);
	};
	
	const getDealerDic = (params: DealerDicParams) => {
		return vm.$u.post(Api.PostDealerDic, params);
	}
	
	const getDealerDetail = (params: DealerDetailParams) => {
		return vm.$u.post(Api.PostDealerDetail, params);
	};
	
	const newDealerInit = (params: AddDealerParams) => {
		return vm.$u.post(Api.PostNewDealerInit, params);
	}
	
	const saveNormalDealer = (params: SaveNormalDealerParams ) => {
		return vm.$u.post(Api.PostAdjustmentInsert, params);
	}
	
	const closeDealerInit = (params: AddDealerParams) => {
		return vm.$u.post(Api.PostCloseDealerInit, params);
	}
	
	const closeDealer = (params: CloseAndShiftDealerParams) => {
		return vm.$u.post(Api.PostCloseDealer, params);
	}
	
	const shiftDealer = (params: CloseAndShiftDealerParams) => {
		return vm.$u.post(Api.PostShiftDealer, params);
	}
	
	const postNewDoorInsert = (params: {}) => {
		return vm.$u.post(Api.PostNewDoorInsert, params);
	}
	
	const getDealerApplyDetail = (params: {}) => {
		return vm.$u.post(Api.PostDealerApplyDetail, params);
	}
	
	const getFirstTypeList = () => {
		return vm.$u.post(Api.PostFirstTypeList);
	}
	
	return {
		getDealerList,
		getDealerDic,
		getDealerDetail,
		newDealerInit,
		saveNormalDealer,
		closeDealerInit,
		closeDealer,
		shiftDealer,
		postNewDoorInsert,
		getDealerApplyDetail,
		getFirstTypeList
	};
}
